<?php

/**
 * $[Create.class] [ LEITURA]
 * Classe responsavel por cadastro no banco de dados!
 *
 *@copyright (c) 2015, Rafael Batista da Silva
 */
class Create extends Conn{

    private $Tabela;
    private $Dados;
    Private $Result;

    /** @var PDOStatement */
    private $Create;

    /** @var PDO */
    private $Conn;

    /**
     * <b> ExeCreate</b> Execute um cadastro simplificado no banco de dados utilizando prepared statements.
     * Basta informa o nome da tabela e um array atribuitivo com o nome da coluna e valor!
     *
     * @param STRING $Tabela = Informe o nome da tabela no banco!
     * @param ARRAY $Dados = Informe um array atribuitivo. ( Nome da coluna => Valor ).
     */
    public function ExeCreate($Tabela, array $Dados){
    	$this->Tabela = (string) $Tabela;
    	$this->Dados = $Dados;

        $this->getSyntax();
        $this->Execute();
    }

    public function getResult(){
        return $this->Result;
    }

    /**
     * ****************************************
     * *********** PRIVATE METHODS ************
     * ****************************************
    */

    private  function Connect(){
        $this->Conn = parent::getConn();
        $this->Create = $this->Conn->prepare($this->Create);
    }

    private function getSyntax(){
        $Fileds =  implode(', ', array_keys($this->Dados));
        $Places = ':'.implode(', :', array_keys($this->Dados));
        $this->Create = "INSERT INTO {$this->Tabela} ({$Fileds}) VALUES ({$Places})";
    }

    private function Execute(){
        $this->Connect();
        try {
            $this->Create->execute($this->Dados);
            $this->Result = $this->Conn->lastinsertId();
        } catch (PDOException $e) {
            echo "O Produto não pode ser adiocnado.<br> <b>Erro:".$e->getMessage()."</b>";        }
    }

}
